package com.gskj.eduservice.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gskj.eduservice.entity.EduCourse;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gskj.eduservice.entity.frontVO.CourseFrontVO;
import com.gskj.eduservice.entity.frontVO.CourseWebVO;
import com.gskj.eduservice.entity.vo.CoursePublishVO;
import com.gskj.eduservice.entity.vo.CourseQueryVO;
import com.gskj.eduservice.entity.vo.CourseVO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 课程 服务类
 * </p>
 *
 * @author testjava
 * @since 2020-05-16
 */
public interface IEduCourseService extends IService<EduCourse> {

    /***
     *  保存 课程基本信息
     * @param courseVO
     * @return
     */
    String saveCourseInfo(CourseVO courseVO);

    /**
     * 根据id查询 课程信息
     *
     * @param courseId
     * @return
     */
    CourseVO getCourseById(String courseId);

    /**
     * 修改 课程信息
     *
     * @param courseVO
     */
    void updateCourseInfo(CourseVO courseVO);

    /**
     * 根据 id 查询课程最终发布的信息
     *
     * @param courseId
     * @return
     */
    CoursePublishVO getCoursePublishInfoByid(String courseId);


    /***
     *  根据id  删除 课程
     *
     * @param courseId
     */
    void removeCourseById(String courseId);

    /**
     * 查询 分页
     *
     * @param queryVO
     * @param page
     * @param size
     * @return
     */
    Map<String, Object> queryCoursePage(CourseQueryVO queryVO, Integer page, Integer size);

    /***
     *  条件分页查询课程信息
     * @param eduCoursePage
     * @param courseFrontVO
     * @return
     */
    Map<String, Object> getFrontCourseListCondition(Page<EduCourse> eduCoursePage, CourseFrontVO courseFrontVO);

    /***
     *  根据课程id 查询课程的 基本信息
     *
     * @param courseId
     * @return
     */
    CourseWebVO getBaseCourseInfoById(String courseId);

}
